iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
AI/ ML & Data

從零開始學AI:數學基礎與程式碼撰寫全攻略系列 第 7

【Day 7】深度神經網路與多層感知器的差異解析及PyTorch安裝指南

  • 分享至 

  • xImage
  •  

前言

我相信被這幾天的數學式砲轟你應該不會想再繼續看數學了,所以我們今天來學點輕鬆的。在我們昨天的內容中提到,計算反向傳播時層數越多,數學公式就會變得更加複雜。當我們想要疊加數十層神經網路時,必須進行大量數學運算來撰寫程式。尤其在前向傳播公式非常複雜的情況下,反向傳播幾乎變得無法運算。因此在今天我將告訴你如何使用Pytorch函式庫來建立前向傳播與反向傳播,並解釋多層感知器與深度神經網路(Deep Neural Network, DNN)之間的差異。

深度神經網路(Deep Neural Network)

https://ithelp.ithome.com.tw/upload/images/20240921/201522369i8L87tXnW.jpg

圖片來源:點我

我們學習到的多層感知器是一種前饋神經網路,該模型架構包含輸入層、多個隱藏層和輸出層,這種模型架構也被稱為全連接層 (Fully Connected Layer)。但這種簡單的模型無法做到過於非線性的運算,因此隨著深度學習的發展,我們需要更複雜的運算和模型。

於是深度神經網路就出現了,深度神經網路與多層感知器的主要差異在於層的數量。事實上多層感知器可以被認為是深度神經網路的一種應用,但無論你稱它為多層感知器或深度神經網路,兩者實際上是相似的。對於學習 AI 的人來說,你說出這些名詞(全連接層、多層感知器、深度神經網路)都能理解,因為它們的數學原理都是基於 wx+b

而這些名詞之間只有些微的差異,例如全連接層通常指某個不同模型連接後的層數;深度神經網路指使用 wx+b 公式的多層網路;而多層感知器通常指僅有一層輸入、一層隱藏和一層輸出的深度神經網路模型。這也是我們在學習 AI 中最容易發生的狀況之一「多個名詞指向類似的技術原理」。

在學習人工智慧時其實有蠻多時間在搞清楚這些名詞之間的關聯性與上下級關係,而知道這一點的用處就是當你在觀看Paper時,更能夠知道該作者所想表達的意圖。

Pytorch的安裝

而向深度神經網路這樣子較為龐大的模型我們就必須使用深度學習函式庫進行反向傳播的運算,並且由於計算量較於複雜,因此通常要使用 GPU 或是 TPU 進行運算,所以我將告訴該如何正確的安裝 GPU 版本的Pytorch。

【STEP 1】檢查顯示卡CUDA支援的版本

首先,我們需要安裝 NVIDIA 的顯示卡驅動程式。大部分電腦預設上應該已經安裝,但如果沒有,你可以自行到 NVIDIA官網進行下載。當完成這個步驟後,我們需要檢查自己顯示卡支持的 CUDA 版本。這時可以在 命令提示字元 (CMD) 中輸入以下指令:

nvidia-smi

此時我們將會看到顯卡的相關資訊並在訊息欄的右上角可以看到 CUDA 支持的最高版本,而這一點就是我們在後續選擇 PyTorch 版本 時所能安裝的最高版本。
https://ithelp.ithome.com.tw/upload/images/20240921/201522360UVnzJww8d.png

【STPE 2】前往Pytorch官方網站

我們可以在 PyTorch 官方網站 找到以下畫面。在這個頁面上,你需要做的是挑選出較上一個步驟中 CUDA 版本更低的 PyTorch安裝指令。因此根據本文所述情況,我們可以選擇 CUDA 12.4 版本進行安裝。
https://ithelp.ithome.com.tw/upload/images/20240921/20152236fke8f56UWx.png

若你的顯示卡較為老舊且最高支援的 CUDA 版本不足最低需求,可以選擇該頁面上方的 install previous versions of PyTorch。這樣你也能夠成功安裝 Pytorch 的 GPU 版本。

【STEP 3】輸入安裝指令並測試

接下來,我們將在命令提示字元中輸入上圖中的文字並等待安裝。這個過程大約會下載3GB左右的文件,因此可能需要一些時間來完成。

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

這時我們無法確認電腦是否成功安裝了 Pytorch 的 GPU 版本,尤其是在 Windows 環境中較為複雜,甚至可能因安裝了多個 Python 版本而導致 pip 指令不確定裝在哪個版本的 Python 中。因此我們可以在 Python 作業環境中輸入以下指令:

import torch
print(torch.cuda.is_available())
# -----輸出-----
True

這時當回傳True時將代表之後可以使用 Pytorch 的 GPU 版本功能來加速運算了,若顯示False不妨先檢查自己的Python版本是否高於3.8,並且檢查是否有存在多個 Python 致環境變數錯亂。

即使沒有 GPU 你仍然可以安裝 PyTorch 的 CPU 版本,只需輸入 pip install torch 即可完成安裝。不過需要注意的是,CPU 版本的運算速度遠遠不及 GPU 版本。這是因為 GPU 可以利用乘數累加器(Multiply Accumulate, MAC)進行大量的矩陣運算,相比之下在CPU上計算時,則需要使用多個步驟來完成相同的運算。

總結

我們今天簡單地區分了多層感知器與深度神經網路的差異,以讓你對這些名詞更加熟悉。同時我們也解釋了全連接層這一個關鍵名詞,這個名詞通常會出現在模型的最後一層,因此應該是最常見的。

而今天我主要還是告訴你如何安裝正確的 PyTorch GPU 版本,以加速大型模型的計算過程。這一點非常重要,因為當初我在學習 AI 時,光是安裝 PyTorch 就花費了非常多的時間。尤其是由於我的顯卡很舊加上網路不穩,每次重新下載 PyTorch 都需要等待3GB的下載時間,因此我在這裡特別強調這些重點,讓你少走些冤枉路。


上一篇
【Day 6】用Numpy實作完整的模型訓練過程2-用多層感知器解XOR邏輯閘問題
下一篇
【Day 8】使用Pytorch實現深度神經網絡進行MNIST手寫數字辨識
系列文
從零開始學AI:數學基礎與程式碼撰寫全攻略30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言